function ajax(url, successCallback, failCallback) {
    var xmlhttp
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest()
    } else {
        // 兼容早期浏览器
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP')
    }
    // 发送请求
    xmlhttp.open('GET', url, true)
    xmlhttp.send()
    // 服务器响应
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            var res = JSON.parse(xmlhttp.responseText)
            // console.log(res);
            successCallback && successCallback(res)
        } else if (xmlhttp.readyState === 4 && xmlhttp.status === 404) {
            var err = xmlhttp.statusText

            failCallback && failCallback(err)
        }
    }
}
// 1未改造前代码
// new Promise((resolve,reject)=>{
//     ajax('static/a.json',res=>{
//         console.log(res);
//         resolve()
//     })
// }).then(res=>{
//     console.log('a成功');
//    return new Promise((resolve,reject)=>{
//         ajax('static/b.json',res=>{
//             console.log(res);
//         resolve()
//         })
//     })
// }).then(res=>{
//     console.log('b成功');
//     return new Promise((resolve,reject)=>{
//         ajax('static/c.json',res=>{
//             console.log(res);
//         resolve()
//         })
//     })
// }).then(res=>{
//     console.log('c成功');
// })

// 改造后代码
function getPromise(url) {
    return new Promise((resolve, reject) => {
        ajax(url, res => {
            resolve(res)
        },err=>{
            reject(err)
        })
    })
}

// 未加err错误判断前
// getPromise('static/a.json').then(res => {
//     console.log(res);
//     return getPromise('static/b.json')
// }).then(res => {
//     console.log(res);
//     return getPromise('static/c.json')
// }).then(res => {
//     console.log(res);
// })

// 错误拦截
// getPromise('static/aa.json').then(res => {
//     console.log(res);
//     return getPromise('static/b.json')
// },err=>{
//     console.log(err);
//     // return getPromise('static/b.json')
// }).then(res => {
//     console.log(res);
//     return getPromise('static/c.json')
// }).then(res => {
//     console.log(res);
// })


getPromise('static/aa.json').then(res => {
    console.log(res);
    return getPromise('static/b.json')
}).then(res => {
    console.log(res);
    return getPromise('static/c.json')
}).then(res => {
    console.log(res);
}).catch(err=>{
    console.log(err);
})
